package com.cn.wanxi.servlet;

import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.model.NewsModel;
import com.cn.wanxi.service.CompanyService;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.service.NewsService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/home")//外部访问后台的接口（地址）
public class HomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        System.out.println(111);
        //这里就是提供给前端访问的地址，并且将数据发送给前端页面
//        怎么发送给jsp页面?页面转发
//        String logo = "../img/logo.jpg";
// req 是页面请求后台
//        resp 后台想要给前端
//        我们需要将数据发送给前端？能不能直接发送呢？
//        所以我们需要一个容器来存放数据，然后将容器发送给前端，前端在容器里面去取
//        对于Java servlet里面由四个容器
//        servlet的四大作用域：page页面，request，session，application
//        req 只有转发的页面才有数据
//        session 在整个会话期都有数据  不能跨浏览器
//        application  在整个项目启动都有数据 可以跨浏览器
//        req.setAttribute("logo", logo);
//        String phone = "028-9999999";
//        req.setAttribute("phone",phone);//key值 关键字，value值
//        这个key值叫做唯一识别码
//        req.setAttribute("phone",logo);
//        对象是类的实例化:用debug启动项目
//        CompanyModel companyModel=new CompanyModel();
//        companyModel.setLogo(logo);
//        companyModel.setPhone(phone);
//        所有引用类型的父类都是Object类
//        为了将当前方法里面的代码进行精简，或者优化，
//        所以我们需要将当前方法里面的代码提取到其他地方取（创建一个新的方法进行调用）

//        CompanyService companyService = new CompanyService();
//        req.setAttribute("companyModel", companyService.getCompanyModel());
//String logo="../img/aa.jpg";
//        String 数据类型   logo 标示符  =  运算符  "../img/aa.jpg" 字面量

        //导航里面有无数个对象，所以，我们需要将对象装到一个大的容器里面
//        数组：定义？将所有的同类型元素装入到一个容器
//        数组的实现方式？
//        NavModel[] navModels =null;
//        NavService navService = new NavService();
//        req.setAttribute("navModels", navService.getNavModels());


        CommonServlet.getCommonData(req);
//开始写新闻代码
//        因为我们需要将数据在服务逻辑层封装，
//        所以，需要创建一个NewsService
        NewsService newsService = new NewsService();
//        通过调用服务逻辑层的方法得到我们需要的数据NewsModel[] newsModels
        NewsModel[] newsModels=newsService.getNewsModelsForHomePage();
//        将数据保存到容器req里面
        req.setAttribute("newsModels", newsModels);
//       将数据转发给前端jsp页面
        req.getRequestDispatcher("/jsp/home.jsp").forward(req, resp);

    }


}
